MFC поддерживает WinSock через два класса:
CAsyncSocket CSocket
CAsyncSocket - это класс, который инкапсулирует возможности работы с WinSock API.
CSocket - это более высокоуровневый класс, который происходит от CAsyncSocket. И естественно обеспечивает работу более высокого уровня. Он обеспечивает ряд функций, например, функцию блокирования, которая необходима для работы с классом CArhive. Описание классов находится в файле:
#include "afxsock.h"
Для обеспечения поддержки работы WinSock и классов MFC необходимо произвести инициализацию в InitInstance(CWinApp::InitInstance) класса приложения вызвав функцию AfxSocketInit:
BOOL AfxSocketInit( WSADATA* lpwsaData = NULL );
При инициализации можно передать указатель на структуру WSADATA, которая будет заполнена в ходе инициализации. При удачной инициализации возврат этой функции отличен от нуля, иначе ноль.
struct WSAData
{
WORD wVersion; // Версия Windows Sockets DLL
WORD wHighVersion; // Версия Windows Sockets DLL
char szDescription[WSADESCRIPTION_LEN+1]; // строка описания
char szSystemStatus[WSASYSSTATUS_LEN+1]; // строка описания
unsigned short iMaxSockets; // максимальное число доступных сокетов
unsigned short iMaxUdpDg; // размер самой большой датаграммы (UDP)
char FAR * lpVendorInfo; // указатель на специальную структуру
// которая не является частью стандарта Windows Sockets
};
Внимание ClassWizard не умеет порождать классы от данных. Это придется делать руками.